A multi-component networked application generally refers to an application with multiple interconnected components that communicate over one or more networks according to specific rules. Virtualization techniques may be employed for rapid provisioning of multiple instances of multi-component applications and their individual components to achieve use cases such as elastic services, disaster recovery, cloning, migration and application-level mirroring. Typically, newly installed or cloned components need to be modified for specific use. Such modification is associated with substantial configuration management with the risk of introducing added overheads and human error. In particular, in order to achieve application-level mirroring, active modification and customization of the mirrored copies is required, so that all the copies are updated with proper network addresses.
Snapshot-based techniques may be used to manage the configuration and updating of mirrored copies across the network by way of, for example, cloning a component or resource such as a virtual machine, while the virtual machine continues to run. This model requires virtualization software to be executed between the system hardware and the virtual machine. In addition, the virtualization software utilizes the resources of the system hardware, thereby degrading performance of the system. This model also requires the execution of a script in the virtualization software or in the guest operating system to perform the cloning operation. Finally, this model requires continuous snapshoting, consuming a great deal of network bandwidth.
One other technique to achieve a mirrored configuration is to install and configure a new virtual machine according to user specifications and to then deploy the virtual machine on a chosen physical host. This model requires installation of operating system and additional software applications to the virtual machine, which in turn degrades performance of the computer system. Also, the system requires periodic maintenance and updates, increasing the risk of operational errors. In addition, this technique employs heuristics to configure the virtual machine that best matches the user specifications, resulting in heuristic evaluations that require additional maintenance and knowledge of software resources.
One additional technique may be to clone one of the existing virtual machines in the mirrored tier and then customize it to differentiate it from other copies. Although the above-mentioned techniques provide for quick deployment of mirrored copies, the requirement to customize the new copy might be time consuming and error-prone. Moreover, customizing all the existing copies in the mirrored tier may be required to create the operational configuration.